Computer technology continues to advance at a rapid pace, with significant developments being made in both software and in the underlying hardware upon which the software executes. One significant advance in computer technology is the development of multi-processor computers, where multiple computer processors are interfaced with one another to permit multiple operations to be performed concurrently, thus improving the overall performance of such computers. Also, a number of multi-processor computer designs rely on logical partitioning to allocate computer resources to further enhance the performance of multiple concurrent tasks.
With logical partitioning, a single physical computer is permitted to operate essentially like multiple and independent virtual computers (referred to as logical partitions), with the various resources in the physical computer (e.g., processors, memory, data structures, and input/output devices) allocated among the various logical partitions. Each logical partition may execute a separate operating system, and from the perspective of users and of the software applications executing on the logical partition, operates as a fully independent computer.
Logical partitions may transfer data to each other, not only to another logical partition operating on the same computer, but also to another logical partition operating on a different computer connected via a network. Logical partitions often transfer data via an operation known as a DMA (Direct Memory Access), which is a technique for transferring data without the direct involvement of the processor, which speeds up not only the data transfer operation, but also the performance of the entire computer. In order to perform the cross-system DMA operation, the computer performing the DMA must be given (from the remote computer) an address on the remote computer to be used as either the source or the destination of the DMA operation. When this passing of addresses is done at the device driver level within a partition, there is a risk of address corruption (either accidentally or maliciously), which results in data being transferred to an address that could have adverse effects on either computer. Logically partitioned computers have a special risk for this type of corruption because they run multiple operating systems and applications in multiple partitions, all of whom may have been designed by different developers.
Without a better way of transferring data, logically-partitioned systems will continue to suffer from the risk of address corruption. Although the aforementioned problems have been discussed in the context of a logically-partitioned computer system, these problems may occur with any type of system.